<?php
/**
 * client client
 *	@package common_lib_client
 */
load_lib('/client/pooling');
/**
 * client client
 * @author pandajingjing
 *	@package common_lib_client
 */
class client_client{
	
	/**
	 * Get获取数据
	 * @param string $p_strURL
	 * @param string $p_strResultType
	 * @return mix
	 */
	static function getData($p_strURL,$p_strResultType='json'){
		return self::_fetchData('get',$p_strURL,NULL,$p_strResultType);
	}
	
	/**
	 * Post获取数据
	 * @param string $p_strURL
	 * @param array $p_arrData
	 * @param string $p_strResultType
	 * @return mix
	 */
	static function postData($p_strURL,$p_arrData,$p_strResultType='json'){
		return self::_fetchData('post',$p_strURL,$p_arrData,$p_strResultType);
	}
	
	/**
	 * 获取数据
	 * @param string $p_strMethod
	 * @param string $p_strURL
	 * @param mix $p_mixData
	 * @param string $p_strResultType
	 * @return mix
	 */
	private static function _fetchData($p_strMethod,$p_strURL,$p_mixData,$p_strResultType='json'){
		$objCURL=client_pooling::getInstance()->getClient();
		if('post'==$p_strMethod){
			$objCURL->setPost(true);
			$objCURL->setPostParams($p_mixData);
		}else{
			$objCURL->setPost(false);
		}
		$objCURL->setURL($p_strURL);
		$bolResult=$objCURL->executeURL();
		if($bolResult){
			$strResource=$objCURL->getContent();
			switch($p_strResultType){
				case 'json':
					$mixData=json_decode($strResource,true);
				case 'string':
				default:
					$mixData=$strResource;
			}
			sys_debugger::getInstance()->showMsg('Client ['.$p_strMethod.'] URL: '.$p_strURL.', Result: '.var_export($bolResult,true).'<br />Params: '.var_export($p_mixData,true).'<br />Data: '.var_export($mixData,true),true);
			return $mixData;
		}else{
			sys_debugger::getInstance()->showMsg('Client ['.$p_strMethod.'] URL: '.$p_strURL.', Result: '.var_export($bolResult,true).'<br />Params: '.var_export($p_mixData,true),true);
			throw new Exception('API->Call: '.$p_strURL.' failed.');
			return false;
		}
	}
}